// pages/jiaofei/shenghuojiaofei/dianfei/dianfei.js
const userApi = require('../../../../utils/user'); // 引入用户API工具
const request = require('../../../../utils/request'); // 引入封装好的请求工具
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 页面状态控制
    currentPage: 1, // 1: 金额选择页, 2: 确认信息页, 3: 支付页

    // 用户信息对象，用于存储登录用户的所有数据
    userInfo: {
      nickName: '', // 用户昵称
      userName: '', // 用户姓名
      phonenumber: '', // 手机号
      avatar: '', // 头像
      balance: '0.00', // 账户余额
      userId: '', // 用户ID
    },

    // 住户信息对象，存储用户的住户相关信息
    resident: {},

    // 用户信息
    address: '', // 房屋地址

    balance: "0.00", // 可用余额
    company: "国家电网", // 缴费单位

    // 金额选择
    selectedAmount: 0, // 选中的金额选项
    customAmount: "", // 自定义金额
    finalAmount: 0, // 最终确认的金额
  },

  /**
   * 选择预设金额
   */
  selectAmount: function(e) {
    const amount = parseInt(e.currentTarget.dataset.amount);
    this.setData({
      selectedAmount: amount,
      customAmount: "", // 清空自定义金额
      finalAmount: amount
    });
  },

  /**
   * 输入自定义金额
   */
  inputAmount: function(e) {
    const value = e.detail.value;
    this.setData({
      customAmount: value,
      selectedAmount: 0, // 清空预设金额选择
      finalAmount: value
    });
  },

  /**
   * 前往确认页
   */
  goToConfirm: function() {
    // 获取最终金额（预设金额或自定义金额）
    let amount = this.data.selectedAmount;
    if (this.data.customAmount) {
      amount = parseFloat(this.data.customAmount);
    }

    // 验证金额
    if (!amount || amount <= 0) {
      wx.showToast({
        title: '请输入有效金额',
        icon: 'none'
      });
      return;
    }

    // 设置最终金额并切换页面
    this.setData({
      finalAmount: amount,
      currentPage: 2
    });
  },

  /**
   * 前往支付页
   */
  goToPayment: function() {
    this.setData({
      currentPage: 3
    });
  },

  /**
   * 返回上一页
   */
  goBack: function() {
    const currentPage = this.data.currentPage;
    if (currentPage > 1) {
      this.setData({
        currentPage: currentPage - 1
      });
    } else {
      // 如果是第一页，则返回上一级页面
      wx.navigateBack({
        delta: 1
      });
    }
  },
/**
   * 生成订单号
   * 格式：SF + 时间戳 + 4位随机数
   */
generateOrderNo: function() {
  const timestamp = new Date().getTime();
  const random = Math.floor(Math.random() * 10000).toString().padStart(4, '0');
  return `SF${timestamp}${random}`;
},
  /**
   * 处理支付
   */
  handlePayment: function() {
    wx.showLoading({
      title: '支付处理中',
    });
 // 获取当前用户和住户信息
 const residentId = this.data.resident.id;
 const houseId = this.data.resident.houseId;
 const amount = this.data.finalAmount;
 // 时间格式建议用当前时间（含时分秒）
 const now = new Date();
 const year = now.getFullYear();
 const month = (now.getMonth() + 1).toString().padStart(2, '0');
 const day = now.getDate().toString().padStart(2, '0');
 const hour = now.getHours().toString().padStart(2, '0');
 const minute = now.getMinutes().toString().padStart(2, '0');
 const second = now.getSeconds().toString().padStart(2, '0');
 const currentDate = `${year}-${month}-${day} ${hour}:${minute}:${second}`;
 const orderNumber = this.generateOrderNo();

 // 构建支付记录数据，字段名与后端保持一致
 const paymentData = {
   orderNumber: orderNumber,//订单号
   residentId: residentId,//住户id
   houseId: houseId,//户号
   paymentMethod: 0, // 示例：微信支付
   paymentTime: currentDate,//支付时间
   paymentAmount: amount,
   paymentStatus: 0,
   createTime: currentDate // 只保留年月日，时分秒为00:00:00
   // reservedField1, reservedField2, reservedField3 可根据需要添加
 };
     // 调用API创建支付记录
     request.post('/shuidianqi/dianbiaochongzhi', paymentData)
     .then(res => {
       wx.hideLoading();
       if (res.code === 200) {
         wx.showToast({
           title: '支付成功',
           icon: 'success',
           duration: 2000,
           success: () => {
             // 支付成功后，跳回第一个页面
             setTimeout(() => {
               this.setData({
                 currentPage: 1,
                 selectedAmount: 0,
                 customAmount: "",
                 finalAmount: 0
               });
               // 重新获取用户信息（余额可能已更新）
               this.getUserInfo();
             }, 2000);
           }
         });
       } else {
         wx.showToast({
           title: res.msg || '支付失败',
           icon: 'none'
         });
       }
     })
     .catch(error => {
       wx.hideLoading();
       console.error('创建支付记录失败:', error);
       wx.showToast({
         title: '支付失败，请稍后重试',
         icon: 'none'
       });
     });
  },

  /**
   * 获取用户信息（从本地存储和API获取）
   */
  getUserInfo: function() {
    wx.showLoading({
      title: '加载中',
    });

    // 1. 首先尝试从本地存储获取用户信息
    const localUserInfo = wx.getStorageSync('userInfo');

    if (localUserInfo) {
      const localResident = localUserInfo.resident || {};
      
      this.setData({
        userInfo: localUserInfo,
        userName: localUserInfo.nickName || localUserInfo.userName || '用户',
        phone: localUserInfo.phonenumber || '未绑定手机号',
        balance: localUserInfo.balance || '0.00',
        userId: localUserInfo.userId || '',
        resident: localResident
      });
      
      if (localResident && localResident.address) {
        this.setData({
          address: localResident.address
        });
      }
      
      wx.hideLoading();

      if (!localResident || Object.keys(localResident).length === 0) {
        console.log('本地没有住户信息或信息不完整，继续获取API数据');
      } else {
        return;
      }
    }

    // 2. 从API获取最新的用户信息
    userApi.getUserProfile()
      .then(res => {
        wx.hideLoading();
        if (res.code === 200) {
          const userData = res.data || {};
          
          const localUserInfo = wx.getStorageSync('userInfo') || {};
          if (localUserInfo.resident) {
            userData.resident = localUserInfo.resident;
          }

          wx.setStorageSync('userInfo', userData);

          this.setData({
            userInfo: userData,
            userName: userData.nickName || userData.userName || '用户',
            phone: userData.phonenumber || '未绑定手机号',
            balance: userData.balance || '0.00',
            userId: userData.userId || ''
          });
        }
      })
      .catch(err => {
        wx.hideLoading();
        console.error('获取用户信息失败:', err);
      });
  },

  /**
   * 获取住户信息
   */
  getResidentInfo() {
    console.log('住户id',this.data.userInfo.resident.id);
    
  //调用接口获取住户信息
  request.get('/property/resident/' + this.data.userInfo.resident.id)
    .then(res => {
      console.log('获取住户信息成功:', res.data);
      this.setData({
        resident: res.data
      });
    })
    .catch(error => {
      console.error('获取住户信息失败:', error);
    });
  
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    if (options.huhao) {
      this.setData({
        huhao: options.huhao
      });
    }

    this.getUserInfo();
    this.getResidentInfo();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})